import { getLatestVersion } from '@/api/system/version.js';

// 全局更新检查工具
export const checkAppUpdate = async (showNoUpdateToast = false) => {
  // #ifdef APP-PLUS

  try {
    const currentVersion = '';
    plus.runtime.getProperty(plus.runtime.appid, function (wgtinfo) {
      currentVersion = wgtinfo.version;
    });
    const platform = plus.os.name.toLowerCase() === 'android' ? 'android' : 'ios';

    console.log('当前版本号：', currentVersion, ',平台：', platform);

    const res = await getLatestVersion();

    console.log('最新的APP版本信息', res);

    if (res.success) {
      const data = res.data.version;

      // 比较版本号
      if (compareVersion(currentVersion, data.version) < 0) {
        // 需要更新，导航到更新页面
        uni.navigateTo({
          url: '/pages/update/update',
        });
        return true;
      } else if (showNoUpdateToast) {
        uni.showToast({
          title: '当前已是最新版本',
          icon: 'none',
        });
      }
    }
  } catch (error) {
    console.error('检查更新失败:', error);
    uni.showToast({
      title: '检查更新失败',
      icon: 'none',
    });
  }
  // #endif

  // 非APP环境
  // #ifndef APP-PLUS
  if (showNoUpdateToast) {
    uni.showToast({
      title: '仅APP支持版本更新',
      icon: 'none',
    });
  }
  // #endif

  return false;
};

// 版本号比较
export const compareVersion = (v1, v2) => {
  const v1Arr = v1.split('.').map(Number);
  const v2Arr = v2.split('.').map(Number);
  const len = Math.max(v1Arr.length, v2Arr.length);

  for (let i = 0; i < len; i++) {
    const num1 = v1Arr[i] || 0;
    const num2 = v2Arr[i] || 0;

    if (num1 > num2) return 1;
    if (num1 < num2) return -1;
  }
  return 0;
};

// 手动检查更新（用于设置页面等场景）
export const manualCheckUpdate = () => {
  return checkAppUpdate(true);
};
